/**
 * 测试步骤三：循环模拟点击商品列表搜索到的商品 -> 跳转到对应的商品详情页 -> 根据接口获取视频数据详情
 */

const axios = require('axios');

// 配置基础URL
const baseURL = 'http://localhost:3000/api/products';

async function testStep3VideoData() {
    console.log('🎬 开始测试步骤三：视频数据获取功能\n');

    try {
        // 测试用的TikTok商品链接
        const testUrl = 'https://shop.tiktok.com/view/product/1731808168774042656?region=MY&local=en&source=product_detail';

        console.log('📋 测试场景一：单个商品视频数据获取');
        console.log('=====================================');

        // 步骤1: 确保有商品数据（使用现有的完整流程）
        console.log('1. 准备商品数据...');
        try {
            const productResponse = await axios.post(`${baseURL}/complete-flow`, {
                url: testUrl
            });

            if (productResponse.data.success) {
                console.log('✅ 商品数据准备完成');
                console.log(`   商品ID: ${productResponse.data.data.product.id}`);
                console.log(`   商品名称: ${productResponse.data.data.product.productName}`);
            } else {
                console.log('❌ 商品数据准备失败:', productResponse.data.message);
                return;
            }
        } catch (error) {
            console.log('❌ 商品数据准备异常:', error.message);
            return;
        }

        // 等待1秒
        await new Promise(resolve => setTimeout(resolve, 1000));

        // 步骤2: 获取单个商品的视频数据
        console.log('\n2. 获取单个商品的视频数据...');
        try {
            const productId = '1731808168774042656';
            const videoResponse = await axios.post(`${baseURL}/${productId}/videos`);

            if (videoResponse.data.success) {
                console.log('✅ 视频数据获取成功');
                console.log(`   获取视频数量: ${videoResponse.data.data.videoCount}`);
                console.log(`   总视频数量: ${videoResponse.data.data.totalVideos}`);
                console.log(`   失败视频数量: ${videoResponse.data.data.failedVideos}`);
            } else {
                console.log('❌ 视频数据获取失败:', videoResponse.data.message);
            }
        } catch (error) {
            console.log('❌ 视频数据获取异常:', error.message);
        }

        // 等待1秒
        await new Promise(resolve => setTimeout(resolve, 1000));

        // 步骤3: 查看商品和视频的关联数据
        console.log('\n3. 查看商品和视频的关联数据...');
        try {
            const productId = '1731808168774042656';
            const withVideosResponse = await axios.get(`${baseURL}/${productId}/with-videos?limit=5`);

            if (withVideosResponse.data.success) {
                console.log('✅ 关联数据查询成功');
                console.log(`   商品名称: ${withVideosResponse.data.data.product.productName}`);
                console.log(`   关联视频总数: ${withVideosResponse.data.data.totalVideos}`);
                console.log(`   当前返回视频数: ${withVideosResponse.data.data.currentVideos}`);

                if (withVideosResponse.data.data.product.videos && withVideosResponse.data.data.product.videos.length > 0) {
                    console.log('\n   前几个视频信息:');
                    withVideosResponse.data.data.product.videos.slice(0, 3).forEach((video, index) => {
                        console.log(`     ${index + 1}. 视频ID: ${video.id}`);
                        console.log(`        描述: ${video.desc || '无描述'}`);
                        console.log(`        播放量: ${video.play_count || 0}`);
                        console.log(`        作者: ${video.author_nickname || '未知'}`);
                        console.log(`        链接: ${video.video_link || '无链接'}`);
                        console.log('');
                    });
                }
            } else {
                console.log('❌ 关联数据查询失败:', withVideosResponse.data.message);
            }
        } catch (error) {
            console.log('❌ 关联数据查询异常:', error.message);
        }

        console.log('\n📋 测试场景二：批量处理商品视频数据');
        console.log('=====================================');

        // 步骤4: 测试批量获取视频数据（只处理没有视频数据的商品）
        console.log('4. 测试批量获取视频数据...');
        try {
            const batchResponse = await axios.post(`${baseURL}/batch/videos`, {
                limit: 3,
                offset: 0,
                onlyWithoutVideos: true
            });

            if (batchResponse.data.success) {
                console.log('✅ 批量处理完成');
                console.log(`   处理总数: ${batchResponse.data.data.total}`);
                console.log(`   成功数量: ${batchResponse.data.data.success}`);
                console.log(`   失败数量: ${batchResponse.data.data.failed}`);
                console.log(`   总视频数: ${batchResponse.data.data.totalVideos}`);

                if (batchResponse.data.data.details && batchResponse.data.data.details.length > 0) {
                    console.log('\n   处理详情:');
                    batchResponse.data.data.details.forEach((detail, index) => {
                        console.log(`     ${index + 1}. ${detail.productName}`);
                        console.log(`        状态: ${detail.success ? '成功' : '失败'}`);
                        console.log(`        视频数: ${detail.videoCount || 0}`);
                        if (detail.error) {
                            console.log(`        错误: ${detail.error}`);
                        }
                        console.log('');
                    });
                }
            } else {
                console.log('❌ 批量处理失败:', batchResponse.data.message);
            }
        } catch (error) {
            console.log('❌ 批量处理异常:', error.message);
        }

        console.log('\n📋 测试场景三：完整流程增强版（包含视频数据）');
        console.log('================================================');

        // 步骤5: 测试完整流程增强版
        console.log('5. 测试完整流程增强版...');
        try {
            // 使用不同的商品链接测试
            const testUrl2 = 'https://shop.tiktok.com/view/product/1234567890123456789?region=MY&local=en&source=product_detail';

            const completeResponse = await axios.post(`${baseURL}/complete-flow-with-videos`, {
                url: testUrl2
            });

            if (completeResponse.data.success) {
                console.log('✅ 完整流程增强版成功');
                console.log(`   商品ID: ${completeResponse.data.data.product.id}`);
                console.log(`   商品名称: ${completeResponse.data.data.product.productName}`);

                if (completeResponse.data.data.videoData) {
                    console.log(`   视频获取状态: ${completeResponse.data.steps.step3_videos}`);
                    console.log(`   视频数量: ${completeResponse.data.data.videoData.videoCount || 0}`);
                    if (completeResponse.data.data.videoData.error) {
                        console.log(`   视频错误: ${completeResponse.data.data.videoData.error}`);
                    }
                }
            } else {
                console.log('❌ 完整流程增强版失败:', completeResponse.data.message);
            }
        } catch (error) {
            console.log('❌ 完整流程增强版异常:', error.message);
        }

        console.log('\n🎉 步骤三测试完成！');
        console.log('\n💡 测试总结：');
        console.log('   - 步骤一和二：获取商品基本信息和Shoplus数据');
        console.log('   - 步骤三：通过Shoplus API获取商品关联的视频数据');
        console.log('   - 支持单个商品视频获取、批量处理、完整流程等多种模式');
        console.log('   - 视频数据包括播放量、点赞数、作者信息、预估销售数据等');

    } catch (error) {
        console.error('❌ 测试过程中发生异常:', error.message);
    }
}

// 运行测试
if (require.main === module) {
    testStep3VideoData();
}

module.exports = {
    testStep3VideoData
};